package com.zzw.dao;

import com.zzw.bean.Permissions;
import com.zzw.bean.PermissionsExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;

/**
 * 权限Mapper接口
 * 用于操作权限数据
 */
public interface PermissionsMapper {
    long countByExample(PermissionsExample example);

    int deleteByExample(PermissionsExample example);

    int deleteByPrimaryKey(Integer id);

    int insert(Permissions record);

    int insertSelective(Permissions record);

    List<Permissions> selectByExample(PermissionsExample example);

    /**
     * 根据角色ID查询权限列表
     * @param roleId 角色ID
     * @return 权限列表
     */
    List<Permissions> selectPermissionByRoleId(@Param("roleId") Integer roleId);

    Permissions selectByPrimaryKey(Integer id);

    int updateByExampleSelective(@Param("record") Permissions record, @Param("example") PermissionsExample example);

    int updateByExample(@Param("record") Permissions record, @Param("example") PermissionsExample example);

    int updateByPrimaryKeySelective(Permissions record);

    /**
     * 更新权限
     * @param permission 权限对象
     * @return 受影响的行数
     */
    int updateByPrimaryKey(Permissions permission);

    /**
     * 根据角色ID删除权限
     * @param roleId 角色ID
     * @return 受影响的行数
     */
    int deleteByRoleId(Integer roleId);

    /**
     * 根据名称查询权限
     * @param name 权限名称
     * @return 权限对象
     */
    Permissions selectByName(String name);

    /**
     * 查询所有权限，并标记当前用户是否拥有
     * @param userId 用户ID
     * @return 权限列表
     */
    List<Permissions> selectAll(@Param("userId") Integer userId);

    /**
     * 查询所有权限，无用户信息
     * @return 权限列表
     */
    List<Permissions> selectAllWithoutUser();
    
    /**
     * 查询所有权限
     * @return 所有权限列表
     */
    List<Permissions> selectAllPermissions();
}
